package chapter009;

import java.util.ArrayList;
import java.util.List;

/**
 * String 类使用
 * 1.String 是对象不是基本数据类型
 * 2.String 是final类，不能被继承。内部变量也是常量,一旦创建，就不能修改它的值
 * 3.已经存在的String对象，修改它的值，就是重新创建一个对象，然后将新值赋予这个对象
 * 4.常用于不经常改变字符串的情况
 *
 * @author Jack魏
 */
public class Point01 {
    public static void main(String[] args) {
        String name = "Jack";
        String name2 = new String("Jack");
        String sex = "男";
        String s = " Hello World! ";
        // 转换成字节
        byte[] bytes = s.getBytes();
        //把字符串转换为字符数组
        char[] chs = s.toCharArray();

        // 获取字符串长度
        System.out.println(name + "的长度是 :" + name.length());
        // 判断长度是否为0
        System.out.println(name.isEmpty());
        // 字符串拼接
        System.out.println("连接字符串方法 concat  : " + name.concat(sex));
        System.out.println("连接字符串 + 操作符拼接: " + name + sex);

        // 判断是否相同字符串
        System.out.println("Jack".equals(name));
        // "Jack"字符串是常量 都在一个常量池里面, 地址一样
        System.out.println("Jack" == name);
        // 比较是地址 new出来的地址和"Jack"常量池里面地址不一样
        System.out.println((name2 == name));
        // 忽略大小写判断是否相同
        System.out.println("jack".equalsIgnoreCase(name));
        // 判断前缀
        System.out.println(name.startsWith("Ja"));
        // 判断后缀
        System.out.println(name.endsWith("Ja"));
        // 转换成字符串
        String doubleStr = String.valueOf(666.888);

        // 转换成大写
        System.out.println(s.toUpperCase());
        // 转换成小写
        System.out.println(s.toLowerCase());
        // 去除两端空格
        System.out.println(s.trim());
        // 字符串比较
        System.out.println("jack".compareTo(name));

        // 取第几位的字符
        System.out.println(name.charAt(0));
        // 返回指定子字符串第一次出现在该字符串内的索引
        System.out.println(name.indexOf("ck"));
        System.out.println(name.indexOf("tom"));
        // 截取子字符串
        System.out.println(name.substring(0, 3));
        System.out.println(name.substring(3));

        // 是否包含子字符串
        System.out.println(name.contains("J"));

        // 替换字符
        String str = "tom and jack";
        String replace = str.replace("jack","jerry");
        System.out.println(replace);
        String s1 = str.replaceAll("a", "b");
        System.out.println(s1);
        String s2 = str.replaceFirst("a", "b");
        System.out.println(s2);

        //分割
        String splitStr = "aa|bb|cc";
//        有些特殊符号需要用 反斜杠 \ 转义，在Java要用两个反斜杠 \\
        String[] strArray = splitStr.split("\\|");
        for(int i = 0; i < strArray.length; i++){
            System.out.print(strArray[i]+"  ");
        }
        System.out.println();

        // 连接方法
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        String join = String.join(",", list);
        System.out.println(join);
    }
}
